home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 17 / CU Amiga Magazine's Super CD-ROM 17 (1997)(EMAP Images)(GB)[!][issue 1997-12].iso / CUCD / Programming / DiceSource / doc / dice_debugger.doc < prev    next >
Text File  |  1994-02-13  |  33KB  |  722 lines

  1. Dice/DD                              Dice/DD
  2.  
  3.  Dice Debugger (DD) User's Manual
  4.  
  5.  OVERVIEW
  6.  
  7.  DD is a debugger designed exclusively for the DICE compiler environment.          
  8.  In previous versions of DICE, all debugging had to be done with assembly
  9.  language debuggers or by inserting printf() calls in the code.    This is
  10.  no longer the case!   DD takes advantage of many old and many new features
  11.  in the DICE compiler to provide you with the ability to debug on the source                   
  12.  level.    DD is both command-line and mouse driven.
  13.  
  14.  DD allows you to examine your program in a variety of display modes and
  15.  using as many windows as you desire.  DD also features ARexx support, the
  16.  ability to replace any of the builtin commands with an Arexx program, 
  17.  and user-definable menus with amiga-key equivalents for the commands of 
  18.  your choice.  Its point-and-click input capabilities allow you to build 
  19.  complex command lines by almost exclusively using the mouse.
  20.  
  21.  DD is designed to be OS friendly under OS versions 1.3 and 2.0 (and up).
  22.  You may DD as many programs at a time as you like, limited only by the
  23.  memory in your machine.  In fact, DD is so OS friendly, it is one of the
  24.  only debuggers that can actually be used to debug itself!  To further
  25.  enhance the usefulness of DD, full source code (written in DICE 'C'
  26.  and A68K assembler) will be made available - you can add new commands
  27.  and features that you need to solve your particular debugging problems.
  28.  
  29.  DICE FEATURES
  30.  
  31.  The DICE features that DD specifically takes advantage of are important
  32.  to consider when writing your programs.  The more you take advantage of
  33.  these great features in DICE, the better DD is able to do its job, too.
  34.  
  35.  First and foremost, the DICE compiler now supports level 1 DEBUG hunks,
  36.  as does the SAS compiler and many available assemblers.  In order to
  37.  enable source-level debugging capabilities of DD, you need to compile
  38.  with the -d1 option to generate these hunks.  You can then use DICE
  39.  or any other debugger that supports the -d1 hunk format to do source
  40.  level debugging.
  41.  
  42.  The DICE compiler also generates the standard Amiga SYMBOL hunks.  These
  43.  are used by DD to provide you with symbolic debugging capability.  When
  44.  these symbols are found in the executable by DD, you will be able to
  45.  use your symbolic names to reference subroutines, variables, and so on.
  46.  To cause DICE to generate the symbol hunks, you must use the -s option
  47.  when compiling.
  48.  
  49.  Lastly, DD will cause the program being debugged to call exit() under
  50.  various circumstances.    If you decide to quit DD while partway debugging
  51.  through a program, your program will immediately exit().  You should take
  52.  advantage of this to have your program clean up any resources it used
  53.  during the debugging session (close your windows, free memory allocated,
  54.  etc.).
  55.  
  56.  DICE supports the ANSI atexit() function, which allows you to specify
  57.  a subroutine to be executed at exit() time.  You should use the atexit()
  58.  function to specify your cleanup routine.  ADDitionally, DICE supports
  59.  the __autoexit keyword, which allows you to declare subroutines that
  60.  are to be executed at exit() time as well.  Use either method, or a
  61.  combination of both, and DD will help you to minimize the number
  62.  of reboots you will have to do when debugging those difficult bugs.
  63.  
  64.  
  65.  THEORY OF OPERATION
  66.  
  67.  A brief discussion of how DD is implemented will help you to understand
  68.  the capabilities of the debugger more fully.
  69.  
  70.  DD has its own custom LoadSeg() routine that is used to load the executable
  71.  from disk.  The entire executable is loaded into contiguous memory, and memory
  72.  is allocated for your program's hunks as suggested by the CBM documentation.
  73.  When your program is RESET (see the reset command below), your program's
  74.  hunks are initialized from the originally loaded and relocations then performed.
  75.  This allows you to reset your debugging session and start over without quitting
  76.  and reloading all over again.  The symbolic and debugging information found
  77.  in the original file are kept track of in the original file memory, to conserve
  78.  memory.
  79.  
  80.  DD actually shares its process with the program being debugged.  This is done
  81.  in a similar fashion to the Exec Signal Exceptions.  The main difference is that
  82.  DD uses two stacks, one for the program being debugged and one for the debugger
  83.  itself.  This is to eliminate the need for your program to have enough extra
  84.  stack to support the debugger, too.  Only a single signal bit (shared among the
  85.  display windows) and the TC_TrapCode pointer of your Task structure will be
  86.  seen by your program while it is being debugged.  Otherwise, DD is completely
  87.  invisible to the program and it will behave as if it were run from the CLI alone.
  88.  
  89.  While debugging, your process will be in one of two states - debugger state or
  90.  program state.    When in debugger state, the debugger has full control, responds
  91.  to your inputs, etc.  When in program state, your program is in full control and
  92.  will run until it exits or until you hit a breakpoint or other stoppage (guru)
  93.  of your program.  The debugger is careful NOT to do DOS calls which might cause
  94.  DOS to be entered twice - DOS is not reentrant...
  95.  
  96.  
  97.  GETTING STARTED
  98.  
  99.  The DD executable should be in your DCC:bin directory along with your other
  100.  DICE executables.  DCC:bin should also be on your path.  Note that DD is
  101.  not a PURE program so you can not make it resident!  Now you can go to
  102.  any directory you have a DICE compiled program and debug it.  Remember to
  103.  compile with -s -d1 to get full debugging capability.
  104.  
  105.  To launch the debugger, just type:
  106.      1> DD myprog parm parm parm ...
  107.  Where myprog is the name of your program (to be debugged) and parm parm parm
  108.  is the typical CLI arguments that you would give to your program.  DD will
  109.  open a console window for you to enter commands.
  110.  
  111.  If you are debugging a 'C' program (DD works for assembly programs, too), DD
  112.  will automaticall set a breakpoint at _main() or @main(), which is the main()
  113.  routine of your program.  You can quit your debugging session at any time by
  114.  hitting ^C while the debugger is active, and DD will exit after causing your
  115.  program to exit(20).
  116.  
  117.  
  118.  DD'S WINDOWS
  119.  
  120.  You initially start DD and have a single console window to control the debugger
  121.  from.  The top few lines of the window are used to display the CPU registers of the
  122.  current state of your program.    All the standard 68000 Data and ADDress Registers
  123.  are displayed, as well as the PC, and SR registers.  The individual bits of the
  124.  condition codes (CCR) are displayed to the right of the SR.  Also, the program's
  125.  state is displayed.  Many states are possible, but typically your program will be
  126.  stepped, steppedover, at a breakpoint, exited, or crashed (CPU exception).  As
  127.  you maneuver through your program with the debugger, values that change in these
  128.  lines will be highlighted - a visual clue to what's changing.
  129.  
  130.  If you use the watchpoint features of DD, your watchpoint display will appear
  131.  below the register display.  Below this is a general purpose scrollable display window which
  132.  DD uses to display various information that you ask it to.  To change the information
  133.  in the display area, you change the Display Mode to that of your choice.  Initially,
  134.  the display area is in MIXED MODE, where your program is shown to you as lines of
  135.  source code with disassembly intermixed.  When you start DD, your MIXED MODE
  136.  display will show you where the PC register points.  The lines of source and
  137.  disassembly that represent the current PC location will be highlighted - most likely
  138.  _main or @main.
  139.  
  140.  Below the general purpose display is the Status: line, where DD will display
  141.  its various status and error messages.    Initially, this line says:
  142.  Status: Ready for command.
  143.  
  144.  Below the status line is the command line itself.  As you type in your commands,
  145.  they will be displayed on the command line.  The left side of the command line
  146.  is your prompt, which consists of some funny looking sequence of characters
  147.  (described in the mouse input section) and the name of the source file that
  148.  the PC is in.  It is always good to know what file your bug is in...
  149.  
  150.  And finally, below the command line are two lines reserved for display of the
  151.  current function key bindings.    By default, these are bound to some very common
  152.  commands that you would otherwise have to type.
  153.  
  154.  DD supports multiple windows - but all share the same command line.  You use
  155.  the "open" command to open a new console window.  You may enter commands into
  156.  any window.  Commands that change a window's mode or display position will affect
  157.  the window you type into.
  158.  
  159.  
  160.  MOUSE INTERFACE
  161.  
  162.  The right mouse button is used, as normal, to operate the Intuition Menus that
  163.  are bound to the window.  The left mouse button is a select button and operates
  164.  differently, depending on where you click.  Clicking on text in the window
  165.  generally causes the word you clicked on to be entered onto the command line
  166.  automatically for you.    That funny character string on the left of the prompt
  167.  is there so you can click to generate those characters.  Clicking to the
  168.  right of the command line is like hitting return to execute the command.
  169.  You can click in any combination of windows to build your command lines.
  170.  
  171.  
  172.  COMMAND SUMMARY
  173.  
  174.  Below is the command summary as found in the help command (help mode display).
  175.  
  176.  NAME
  177.  again            - repeat last command
  178.  alias            - replace command with arexx script
  179.  bp {expr}        - set breakpoint at expression
  180.  bp ALL           - set all breakpoints in table
  181.  breakpoints      - display breakpoint table
  182.  bytes {expr}     - display bytes {at expression}
  183.  changewindow     - move/size current window
  184.  clear expr       - clear breakpoint at expression
  185.  clear ALL        - clear all breakpoints in table
  186.  close            - close a display
  187.  devs             - display Exec Device List
  188.  dism {expr}      - change to dism mode {at expression}
  189.  dosbase          - intelligent display of DOSBase struct
  190.  down             - move display down one line
  191.  eval {expr}      - evaluate an expression
  192.  execbase         - display ExecBase (SysBase)
  193.  fkey             - set function key definition
  194.  go {expr...}     - set {expr...} temp breakpoints & go
  195.  help             - online help
  196.  hunks            - change to hunks mode
  197.  info             - display ThisTask info
  198.  intrs            - display Exec Intrs List
  199.  jump {name}      - jump to public screen
  200.  libs             - display Exec Libs List
  201.  longs {expr}     - display longs {at expression}
  202.  mbar             - add menu bar
  203.  mend             - add menu end mark
  204.  memlist          - display Exec Mem List
  205.  mitem            - add menu item
  206.  mixed {expr}     - change to mixed mode {at expression}
  207.  menus            - activate a new set of user menus
  208.  msub             - add a sub menu item
  209.  mtitle           - add menu title
  210.  offsets          - toggle display address/offsets
  211.  open {type}      - open a new display
  212.  over {range}     - stepover one instruction or range
  213.  pagedown         - move display down one page
  214.  pageup           - move display up one page
  215.  rendlist         - end the arexx list
  216.  rgetbyte {expr}  - get bytes at {expr}
  217.  rgetcom          - get command line input
  218.  rgetdism {expr}  - get the dissembled line
  219.  rgeteval {expr}  - evaluate the expression
  220.  rgetinfo {expr}  - get the program nam
  221.  rgetline {expr}  - return the source/mixed line
  222.  rgetlong {expr}  - get longs at {expr}
  223.  rgetword {expr}  - get words at {expr}
  224.  rgetpc           - return the program counter
  225.  rputlist         - add an item to the arexx list
  226.  rshowlist        - show the arexx list
  227.  rstartlist       - start the arexx list
  228.  rx rexx-script   - execute ARexx macro
  229.  saveprefs        - save DD prefs to disk
  230.  set {addr} {val} - set address to val
  231.  ports            - display Exec Ports List
  232.  process {expr}   - display process {at expression}
  233.  resources        - display Exec Resource List
  234.  quit             - _exit(20) & quit DD
  235.  refresh          - refresh the window
  236.  registers        - toggle the register display
  237.  reset            - _exit(20) & restart program
  238.  rstep            - toggle library call auto stepover flag
  239.  source {expr}    - change to source mode {at expression}
  240.  step             - step program one instruction or range
  241.  symbols {expr}   - display symbol {at expr}
  242.  symlist          - display sorted symbol list
  243.  tasks            - display Exec Task Lists
  244.  unalias          - restore command with arexx script
  245.  up               - move display up one line
  246.  watchbyte {expr} - set/clear (toggle) byte watchpoints
  247.  watchclear       - clear all watchpoints
  248.  watchlong {expr} - set/clear (toggle) long watchpoints
  249.  watchword {expr} - set/clear (toggle) word watchpoints
  250.  words {expr}     - display words {at expression}
  251.  
  252.  EXPRESSIONS
  253.  
  254.  The expression evaluator can handle most C style expressions, and can be used
  255.  on the command line to set breakpoints, display source, and so on.
  256.  
  257.  
  258.  KEYBINDINGS
  259.  
  260.  The following keys are bound, as defaults, in DD:
  261.  
  262.  upcursor = up
  263.  downcursor = down
  264.  shift upcursor = pageup
  265.  shift downcursor = pagedown
  266.  leftcursor = left
  267.  rightcursor = right
  268.  return = execute command
  269.  HELP = toggle to help display (help = help mode, help again = previous mode)
  270.  
  271.  
  272.  AREXX SUPPORT
  273.  
  274.  DD is the base name of DD's ARexx port.  The ARexx commands that are
  275.  supported by DD are identical to those that you type in at the command
  276.  line.  DD also has the rexx command to allow you to run rexx scripts
  277.  as macros from inside DD.  These rexx script files should have the
  278.  .DD extension, so you can identify which scripts are for DD.
  279.  
  280.  The ALIAS command allows you to replace any of the built in commands
  281.  with an Arexx script of the same name (with an appended .dbug).  DD looks
  282.  first in the current directory, then in dcc:rexx/ for the command.
  283.  UNALIAS cancels a previous alias.  From within the ARexx script, the internal
  284.  command can be called by name.  (as can all internal commands)
  285.  
  286.  The results of an internal command called by an ARexx program are placed
  287.  in the ARexx result variable.
  288.  
  289.  NOTE: Aliases are part of the DD preferences saved to disk, and automatically
  290.  loaded on starting DD.
  291.  
  292.  The Rexx port name of the first port is DD.01  Subsequent ports are named
  293.  DD.02, DD.03, and so on.
  294.  
  295.  
  296.  
  297.  COMMAND DESCRIPTIONS
  298.  
  299.  AGAIN
  300.      This command repeats the last command entered.  It is
  301.  occasionally useful when a complicated command was entered. 
  302.  
  303.  ALIAS
  304.      This command provides a limited alias function for all internal
  305.  commands.  When an internal command is aliased, DD looks for an AREXX
  306.  program with the same name (with the .DD extension) and executes that
  307.  instead of the internal command.  The internal command is still
  308.  available, however, by specifying the name within the ARexx program.  
  309.  This allows you to, for instance, write a replacement pagedown command that 
  310.  first sends a message to the AME editor, then calls the built in DD pagedown
  311.  command.  To save the change, the saveprefs command must be used.
  312.  
  313.  BP {expression} 
  314.  The BP command sets a breakpoint.  If the optional
  315.  {expression} is given, DD will set the breakpoint at that address.
  316.  The expression can also be a source line number (indicated by the
  317.  trailing period.) DD will look up the source line specified, and set
  318.  the breakpoint at the start of the code for that source line.  If no
  319.  expression is given, DD sets the breakpoint at address in the Program
  320.  Counter.  A line containing a breakpoint is underlined on the display.
  321.  The mouse can also be used to set (and unset) breakpoints.  Just
  322.  doubleclick on the left (address) column of the display area, and the
  323.  breakpoint is set.  (If you doubleclick on an already set breakpoint,
  324.  it will be unset).  If there is no more room in the breakpoint table,
  325.  and there are unarmed breakpoints, one will be replaced by a newly
  326.  set breakpoint;  otherwise the attempt to set a new breakpoint will
  327.  fail.
  328.  
  329.  BP ALL
  330.      When a breakpoint is hit, it is automatically unset.  However,
  331.  it is still in the breakpoint table, and can be rearmed.  The bp all
  332.  commnd rearms all breakpoints in the table. 
  333.  
  334.  BREAKPOINTS
  335.      This command displays the table containing the current
  336.  breakpoint list, and current status.  Breakpoints can be set and unset
  337.  directly on the table display itself. 
  338.  
  339.  BYTES {expression}
  340.      The bytes command changes the display mode of the current
  341.  window to the bytes display.  The optional expression allows you to
  342.  specify the start of the byte display.  (DD attempts to keep enforcer
  343.  happy; most illegal accesses are trapped).  If no expression is
  344.  specified, the address of the display remains the same; just the mode
  345.  is changed. 
  346.  
  347.  CHANGEWINDOW
  348.      This command is used to move and size the curren DD window.  It
  349.  only operates under AmigaaOS 2.0 or greater (so, why haven't you
  350.  upgraded yet ?).  The command takes the two coordinates of the upper
  351.  left corner of the window, the width, and the height, and moves the
  352.  window there if possible. 
  353.  
  354.  CLEAR {expression}
  355.      This command clears the breakpoint at the expression.  If no
  356.  expression is given, the breakpoint is cleared at the PC location.
  357.  The breakpoint is not removed from the breakpoint table, and may be
  358.  re-armed by the BP command.
  359.  
  360.  CLEAR ALL
  361.      Clear all clears the entire breakpoint table. 
  362.  
  363.  CLOSE
  364.      This command closes the current display window.  If the current
  365.  window is the only DD window open, DD exits. 
  366.  
  367.  DEVS
  368.      This command displays the current Exec Device List
  369.  
  370.  DISM {expression}
  371.      The dism command changes the display mode of the current window
  372.  to the disassembly display.  The optional expression allows you to
  373.  specify the start of the disassembly display.  (DD attempts to keep
  374.  enforcer happy; most illegal accesses are trapped).  If no expression
  375.  is specified, the address of the display remains the same; just the
  376.  mode is changed. 
  377.  
  378.  DOSBASE
  379.      This command displays the pulic fields of the AmigaDOS DOSBase
  380.  structure. 
  381.  
  382.  DOWN
  383.      This command is used to move the cursor down one line.  New
  384.  informtion is displayed at the bottom of the display area if the
  385.  display scrolls.  This command acts the same as pressing the cursor
  386.  down key. 
  387.  
  388.  EVAL {expression}
  389.      This command evaluates an expression, and prints the result to
  390.  the screen. 
  391.  
  392.  EXECBASE
  393.      This command displays the current contents of the public fields
  394.  of ExecBase. 
  395.  
  396.  FKEY num definition
  397.      This command is used to set one of the ten function key
  398.  definitions.  The command takes the function key number (from 1 to 10)
  399.  and the definition string. 
  400.  
  401.  GO {expression}
  402.      The go command sets all the breakpoints in the breakpoint
  403.  table, and starts execution on the program being debugged.  Execution
  404.  begins at the expression if provided; otherwise execution begins at
  405.  the address contained in the program counter (PC).  The program runs
  406.  at full speed; the debugger does not regain control until either the
  407.  program exits, or the program encounters one of the breakpoints.  If
  408.  more control over the execution is desired, you should use one of the
  409.  single step functions (step or over) instead. 
  410.  
  411.  HELP {command}
  412.      Provide short online help list
  413.  
  414.  HUNKS
  415.      This command changes the current display to a table of the
  416.  hunks in the progra being debugged. 
  417.  
  418.  INFO
  419.      This command displays information on the current task, taken
  420.  from the task structure. 
  421.  
  422.  INTRS
  423.      The intrs command displays the Exec interrupt list. 
  424.  
  425.  JUMP {name}
  426.      The jump command is used to jump a DD window to another public
  427.  Intuition screen.  With no argument, the jump command jumps the window
  428.  to the next public screen.  If an argument is specified, the jump
  429.  command jumps the window to that public screen.  If the screen does
  430.  not exist (or there is only one public screen, ie Workbench) nothing
  431.  happens. 
  432.  
  433.  LIBS
  434.      This command diplays the Exec library list.
  435.  
  436.  LONGS {expression}
  437.      The longs command changes the display mode of the current
  438.  window to the longs display.  The optional expression allows you to
  439.  specify the start of the longs display.  (DD attempts to keep enforcer
  440.  happy; most illegal accesses are trapped).  If no expression is
  441.  specified, the address of the display remains the same; just the mode
  442.  is changed. 
  443.  
  444.  MBAR slot
  445.      This command is used when setting up the programmable menu
  446.  system, to add a menubar at the specified slot.  The slot can be a
  447.  positive integer (from 0 to 127) or -1 (which tells DD to append the
  448.  new menu bar to the existing menus) When this command is used, menus
  449.  are automatically turned off, and must be turned on with the menus
  450.  command. 
  451.  
  452.  MEND
  453.      This command is used when setting up the programmable menu
  454.  system, to add a menu end marker at the specified slot. The slot can
  455.  be a positive integer (from 0 to 127) or -1 , which tells DD to append
  456.  the new menu end marker to the existing menus. When this command is
  457.  used, menus are automatically turned off, and must be turned on with
  458.  the menus command. 
  459.  
  460.  MEMLIST
  461.      This command displays the current Exec memory lists
  462.  
  463.  mitem slot label command shortcutkey
  464.      This command is used when setting up the programmable menu
  465.  system, to add a menu item at the specified slot. The slot can be a
  466.  positive integer (from 0 to 127) or -1 , which tells DD to append the
  467.  new menu item to the end of the existing menus.  The label is what is
  468.  displayed in the menu.  The command is what is executed when the menu
  469.  item is selected.  The optional shortcut key is used to assign a Right
  470.  Amiga key shortcut to the function.  When this command is used, menus
  471.  are automatically turned off, and must be turned on with the menus
  472.  command. 
  473.  
  474.  MIXED {expression}
  475.      The mixed command changes the display mode of the current
  476.  window to the mixed display.  The optional expression allows you to
  477.  specify the start of the longs display.  (DD attempts to keep enforcer
  478.  happy; most illegal accesses are trapped).  If no expression is
  479.  specified, the address of the display remains the same; just the mode
  480.  is changed.  The mixed mode display consists of the source for the
  481.  program being debugged (if available) interspersed with the
  482.  disassembled instructions that each source line compiles to. 
  483.  
  484.  MENUS
  485.      This command activates the DD menus.
  486.  
  487.  MSUB slot label command shortcutkey
  488.      This command is used when setting up the programmable menu
  489.  system, to add a menu subitem at the specified slot. The slot can be a
  490.  positive integer (from 0 to 127) or -1 , which tells DD to append the
  491.  new menu subitem to the end of the existing menus.  The label is what
  492.  is displayed in the menu.  The command is what is executed when the
  493.  menu item is selected.  The optional shortcut key is used to assign a
  494.  Right Amiga key shortcut to the function.  When this command is used,
  495.  menus are automatically turned off, and must be turned on with the
  496.  menus command.  Sub items are automatically attached to the nearest
  497.  previous menu item.  DD does not support sub items under 1.3.
  498.  Instead, they are treated as menu items. 
  499.  
  500.  MTITLE slot label
  501.      This command is used when setting up the programmable menu
  502.  system, to add a menu title at the specified slot.  The slot can be a
  503.  positive integer (from 0 to 127) or -1 (which tells DD to append the
  504.  new menu title to the existing menus) Each menu title must have at
  505.  least one menu item following it.  The label is used as the menu
  506.  title.  When this command is used, menus are automatically turned off,
  507.  and must be turned on with the menus command. 
  508.  
  509.  OFFSETS
  510.      This command toggles the display of addresses as either offsets
  511.  from a listed symbol name or plain hex addresses. 
  512.  
  513.  OPEN {type}
  514.      This command is used to open a new DD display.  If no type is
  515.  specified, a new window is opened with the same display as the current
  516.  window.  Otherwise, a display of the specified type is opened.  The
  517.  displys are somewhat independent ... each can display a different
  518.  address, but share breakpoints, the registers, Rexx port name, etc. 
  519.  
  520.  OVER {range}
  521.      This command is used to single step the program under debug,
  522.  stepping over subroutines.  The subroutine is executed, and control
  523.  returns to the debugger at the instruction immediately following.
  524.  The optional range parameter allows you to set up an address range
  525.  for execution.  Control returns to the debugger if the program
  526.  under debug leaves the range.
  527.  
  528.  PAGEDOWN
  529.      This command is used to move the cursor down one page.  New
  530.  informtion is displayed at the bottom of the display area if the
  531.  display scrolls.  This command acts the same as pressing the shifted cursor
  532.  down key. 
  533.  
  534.  PAGEUP
  535.      This command is used to move the cursor up one page.  New
  536.  informtion is displayed at the top of the display area if the
  537.  display scrolls.  This command acts the same as pressing the shifted cursor
  538.  up key. 
  539.  
  540.  RENDLIST
  541.      This command is used to signal completion of a buffer list creation
  542.  by an external ARexx program.  DD allows external commands to create an
  543.  information list through its ARexx port.  The list is then available for
  544.  display;  DD handles scrolling, refresh of the list, and so on.  This command
  545.  tells DD that the list is complete and ready for display.
  546.  
  547.  RGETBYTE {expression}
  548.      This command is used to get one line of bytes at expression.  If no
  549.  expression is provided, the bytes will be fetched from the location specified
  550.  by the PC.  The bytes are returned in the ARexx RESULT variable.
  551.  
  552.  RGETCOM
  553.      This command is used to get the command line.  The command line
  554.  is returned in the ARexx RESULT variable.
  555.  
  556.  RGETDISM {expr}
  557.      This command is used to get one line of disassembly at expression.  If no
  558.  expression is provided, the disassembly will be fetched from the location 
  559.  specified by the PC.  The bytes are returned in the ARexx RESULT variable.
  560.  
  561.  RGETEVAL {expr}
  562.      This command evaluates the expression, and passes it back in the
  563.  ARexx RESULT variable.
  564.  
  565.  RGETINFO {expr}
  566.      This command is used to get the program name and current line number
  567.  of the expression.  If no expression is provided, the information will be 
  568.  fetched from the location specified by the PC.  The results are returned in 
  569.  the ARexx RESULT variable.
  570.  
  571.  RGETLINE {expr}
  572.      This command is used to get one line of mixed display at expression.  
  573.  If no expression is provided, the disassembly will be fetched from the location 
  574.  specified by the PC.  The lines are returned in the ARexx RESULT variable.
  575.  
  576.  RGETLONG {expr}
  577.      This command is used to get one line of long words at expression.  If no
  578.  expression is provided, the long words will be fetched from the location specified
  579.  by the PC.  The bytes are returned in the ARexx RESULT variable.
  580.  
  581.  RGETWORD {expr}
  582.      This command is used to get one line of words at expression.  If no
  583.  expression is provided, the words will be fetched from the location specified
  584.  by the PC.  The bytes are returned in the ARexx RESULT variable.
  585.  
  586.  RGETPC
  587.      This command is used to get the value if the current Program 
  588.  Counter (PC).  The bytes are returned in the ARexx RESULT variable.
  589.  
  590.  RPUTLIST
  591.      This command is used to add a line of text to the buffer list being
  592.  created by an external ARexx program.  DD allows external commands to create an
  593.  information list through its ARexx port.  The list is then available for
  594.  display;  DD handles scrolling, refresh of the list, and so on.  This command
  595.  gives a line for DD to add to the list.
  596.  
  597.  RSHOWLIST
  598.      This command is used to display the external buffer list previously
  599.  created with the rputlist commands.
  600.  
  601.  RSTARTLIST
  602.      This command is used to signal the start of creation of a buffer list 
  603.  by an external ARexx program.  DD allows external commands to create an
  604.  information list through its ARexx port.  The list is then available for
  605.  display;  DD handles scrolling, refresh of the list, and so on.  This command
  606.  initializes the buffer list.
  607.  
  608.  RX rexx-script
  609.      This command executes an external ARexx script file.  DD will treat any
  610.  command given by the user which is not an internal command as an ARexx
  611.  command;  the rx command is to execute scripts with the same name as
  612.  internal commands, or the same name as a symbol from the program under debug.
  613.  
  614.  SAVEPREFS
  615.      This command saves the configuration file for DD to dcc:config/dd.config.
  616.  This file contains information on which commands are aliased, window position
  617.  information, etc.
  618.  
  619.  SET {address} {value}
  620.      This command is used to set the address to the specified value.  If the
  621.  value is not given, a 0 will be used.  This command can also change the value
  622.  of the registers  (A register is denoted by the trailing :, ie A0: or PC:).
  623.  
  624.  PORTS
  625.      This command is used to display the Exec port list.
  626.  
  627.  PROCESS {expression}
  628.      This command is used to display process information for the process
  629.  at {expression}.  If no expression is given, the address contained in the
  630.  Program Counter will be used instead.
  631.  
  632.  RESOURCES
  633.      This command is used to display the Exec resources list.
  634.  
  635.  QUIT
  636.      This command calls the exit routine (_exit or @exit) of the program
  637.  under debug with a 20 in D0, then exits from the DD program.
  638.  
  639.  REFRESH
  640.      Refresh the current window display.
  641.  
  642.  REGISTERS
  643.      This command toggles the register display.  Some windows contain the
  644.  register display by default (the mixed mode display, for instance).  Others
  645.  do not (the source display).  The registers command changes this for a
  646.  particular window.  Once the registers command has been executed in a
  647.  window, the register display is on 'manual', and just obeys the register
  648.  command.
  649.  
  650.  RESET
  651.      This command calls the exit routine (_exit or @exit) of the program
  652.  under debug with a 20 in D0, then restarts the it.
  653.  
  654.  RSTEP            - toggle library call auto stepover flag
  655.      This command toggles the auto stepover flag for libraries.  If rstep
  656.  is on, then DD will automatically use OVER when asked to STEP into an 
  657.  Amiga rom routine.
  658.  
  659.  source {expression}
  660.      The source command changes the display mode of the current window
  661.  to the source display.  The optional expression allows you to
  662.  specify the start of the source display.  (DD attempts to keep
  663.  enforcer happy; most illegal accesses are trapped).  If no expression
  664.  is specified, the address of the display remains the same; just the
  665.  mode is changed. 
  666.  
  667.  STEP
  668.      This command is used to single step the program under debug.
  669.  The optional range parameter allows you to set up an address range
  670.  for execution.  Control returns to the debugger if the program
  671.  under debug leaves the range.
  672.  
  673.  SYMBOLS {expression}
  674.      This command is used to display the symbol table for the program
  675.  under debug.  Breakpoints can be set from this table.  This table is 
  676.  ordered by address.
  677.      
  678.  SYMLIST
  679.      This command is used to display the symbol table for the program
  680.  under debug.  This table is sorted.
  681.  
  682.  TASKS
  683.      This command will display the Exec task list.
  684.  
  685.  UNALIAS
  686.      This command removes a previously set alias.  To save the change, 
  687.  the saveprefs command must be used.
  688.  
  689.  UP
  690.      This command is used to move the cursor up one line.  New
  691.  informtion is displayed at the top of the display area if the
  692.  display scrolls.  This command acts the same as pressing the cursor up key. 
  693.  
  694.  WATCHBYTE {expression} - set/clear (toggle) byte watchpoints
  695.      This command is used to see the values of bytes at the specified
  696.  expression.  This command  sets or clears a watchbyte.  If there are any 
  697.  watchbytes,  the display is added to the current DD window;  otherwise there is
  698.  no watchbyte display.  The expression can be an address, or a symbol.
  699.  
  700.  WATCHCLEAR       - clear all watchpoints
  701.      This command removes all watchbytes, watchwords, and watchlongs.
  702.  
  703.  WATCHLONG {expr} - set/clear (toggle) long watchpoints
  704.      This command is used to see the values of longss at the specified
  705.  expression.  This command  sets or clears a watchlong.  If there are any 
  706.  watchlongs,  the display is added to the current DD window;  otherwise there is
  707.  no watchlong display.  The expression can be an address, or a symbol.
  708.  
  709.  WATCHWORD {expr} - set/clear (toggle) word watchpoints
  710.      This command is used to see the values of words at the specified
  711.  expression.  This command  sets or clears a watchword.  If there are any 
  712.  watchwords,  the display is added to the current DD window;  otherwise there is
  713.  no watchword display.  The expression can be an address, or a symbol.
  714.  
  715.  WORDS {expression}
  716.      The dism command changes the display mode of the current window
  717.  to the word display.  The optional expression allows you to
  718.  specify the start of the word display.  (DD attempts to keep
  719.  enforcer happy; most illegal accesses are trapped).  If no expression
  720.  is specified, the address of the display remains the same; just the
  721.  mode is changed. 
  722.